const Router = require('koa-router')
const requireDirectory = require('require-directory')

class InitManager {
  static initCore(app) {
    // 入口方法
    InitManager.app = app
    InitManager.initLoadRouters()
  }

  static initLoadRouters() {
    requireDirectory(module, '../app/router', { visit: whenModuleLoaded })

    function whenModuleLoaded(obj) {
      if(obj instanceof Router) {
        InitManager.app.use(obj.routes()).use(obj.allowedMethods())
      } else {
        let objKeys = Object.keys(obj)
        if(!objKeys.length) return
        for(let key of objKeys) {
          const router = obj[key]
          if(router instanceof Router) { // 找到模块导出的是Router，就注册为路由，默认只为模块注册一个路由，其它导出忽略
            InitManager.app.use(router.routes()).use(router.allowedMethods())
            break
          }
        }
      }
    }
  }
}

module.exports = InitManager